﻿//#include <iostream>
//using namespace std;
//
//class Date
//{
//public:
//	//初始化列表
//	Date(int year,int month,int day)
//		:_year(year),_month(month),_day(day)
//	{}
//private:
//	int _year;
//	int _month;
//	int _day;
//};
//
//int main()
//{
//
//	return 0;
//}

//#include <iostream>
//using namespace std;
//
//class A
//{
//private:
//	A(int n)
//	{
//		val = n;
//	}
//public:
//	int val;
//};
//
//
//class Date
//{
//public:
//	//初始化列表
//	Date(int year, int month, int day)
//		//定义
//		:_year(year), _month(month), _day(day)
//	{}
//private:
//	//声明
//	int _year;
//	int _month;
//	int _day;
//	const int _a;
//	int& _b;
//	A _c;
//};
//
//int main()
//{
//
//	return 0;
//}

//#include <iostream>
//using namespace std;
//
//class Date
//{
//public:
//	//初始化列表
//	Date(int year, int month)
//		//定义
//		:_year(year), _month(month)
//	{}
//	void print()
//	{
//		cout << _year << "年" << _month << "月" << _day << "日" << endl;
//	}
//private:
//	//声明
//	int _year;
//	int _month;
//	int _day = 16;
//};
//
//int main()
//{
//	Date d1(2024, 7);
//	d1.print();
//	return 0;
//}

//#include <iostream>
//using namespace std;
//
//class A
//{
//public:
//	explicit A(int n)
//	{
//		val = n;
//	}
//	explicit A(int n, int m)
//	{
//		val = n;
//		exc = m;
//	}
//private:
//	int val;
//	int exc;
//};
//
//int main()
//{
//	//1构造一个A的临时对象，再用这个临时对象拷⻉构造a
//	A a = 1;
//	// C++11之后才支持多参数转化
//	A aa3 = { 2,2 };
//	return 0;
//}

//#include <iostream>
//using namespace std;
//
//class A
//{
//public:
//	//A()
//	//	// error C2438: “exc”: 无法通过构造函数初始化静态类数据
//	//	:val(1),exc(2)
//	//{
//	//	
//	//}
//	void print()
//	{
//		cout << val << " " << exc << endl;
//	}
//private:
//	int val;
//	//类里面声明
//	static int exc;
//};
//
////类外面初始化
//int A::exc = 1;
//
//int main()
//{
//	A a;
//	a.print();
//	return 0;
//}

//#include <iostream>
//using namespace std;
//
//class A
//{
//public:
//	static void PK();
//	void print()
//	{
//		cout <<  exc << endl;
//	}
//private:
//	//类里面声明
//	static int exc;
//};
//
////类外面初始化
//int A::exc = 1;
//
//void A::PK()
//{
//	//error C2597: 对非静态成员“A::val”的非法引用
//	//val = 1;
//	cout << "666" << endl;
//}
//
//int main()
//{
//	A a;
//	a.print();
//	a.PK();
//	A::PK();
//	return 0;
//}

//#include <iostream>
//using namespace std;
//
//class A
//{
//public:
//	friend void PK(A& ra);
//	void print()
//	{
//		cout << _a << endl;
//	}
//private:
//	int _a = 1;
//};
//
//void PK(A& ra)
//{
//	cout << ra._a << endl;
//}
//
//int main()
//{
//	A a;
//	PK(a);
//	a.print();
//	return 0;
//}

//#include <iostream>
//using namespace std;
//
//class A
//{
//public:
//	//友元声明
//	friend class B;
//	void print()
//	{
//		cout << _a << endl;
//	}
//private:
//	int _a = 1;
//};
//
//class B
//{
//public:
//	void print(A& ra)
//	{
//		ra._a = 3;
//		ra.print();
//		cout << _b << endl;
//	}
//private:
//	int _b = 2;
//};
//
//int main()
//{
//	A a;
//	B b;
//	b.print(a);
//	return 0;
//}

//#include <iostream>
//using namespace std;
//
//class A
//{
//public:
//	A(int v = 1)
//		:val(v)
//	{}
//	~A()
//	{
//		cout << "~A()->"  << val << endl;
//	}
//	void print()
//	{
//		cout << val << endl;
//	}
//private:
//	int val;
//};
//
//int main()
//{
//	A a;
//	// 不能这么定义对象，因为编译器无法识别下面是⼀个函数声明，还是对象定义
//	//warning C4930: “A aa1(void)”: 未调用原型函数(是否是有意用变量定义的?)
//	//A aa1();
//	// 但是我们可以这么定义匿名对象，匿名对象的特点不用取名字，
//	// 但是他的生命周期只有这一行，我们可以看到下一行他就会自动调用析构函
//	A(2);
//	A(3);
//	A aa(4);
//	//无需命名，直接使用类的函数，非常方便
//	A().print();
//	return 0;
//}

//#include <iostream>
//using namespace std;
//
//class A
//{
//public:
//	A(int n = 1)
//		:val(n)
//	{
//		cout << "A()" << endl;
//	}
//	A(const A& ra)
//	{
//		val = ra.val;
//	}
//	~A()
//	{
//		cout << "~A()" << endl;
//	}
//private:
//	int val = 1;
//};
//
//void f1(A aa)
//{
//	
//}
//
//A f2()
//{
//	A c;
//	return c;
//}
//
//int main()
//{
//	//A a;
//	//f1(a);
//	//f1(1);
//	const A b = f2();
//	return 0;
//}

#include <iostream>
using namespace std;
int main()
{
	//new 申请对象
	int* p1 = new int;
	int* p2 = new int(0);
	int* p3 = new int[3];
	int* p4 = new int[3] {1, 2, 3};
	int* p5 = new int[3] {1};

	return 0;
}